home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / By the Book / Learn C++ (CodeWarrior) / Chap 09.01 - template / template.cp < prev    next >
Text File  |  1995-10-21  |  2KB  |  89 lines

  1. #include <iostream.h>
  2.  
  3. const short kNumElements = 10;
  4.  
  5. //---------------------------------------  Array
  6.  
  7. template <class T>
  8. class Array
  9. {
  10.     private:
  11.         short        arraySize;
  12.         T                *arrayPtr;
  13.         T                errorRetValue;
  14.         
  15.     public:
  16.                     Array( short size );
  17.                     ~Array();
  18.         T            &operator[]( short index );
  19. };
  20.  
  21. template <class T>
  22. Array<T>::Array( short size )
  23. {
  24.     arraySize = size;
  25.     arrayPtr = new T[ size ];
  26.     errorRetValue = 0;
  27. }
  28.  
  29. template <class T>
  30. Array<T>::~Array()
  31. {
  32.     delete [] arrayPtr;
  33. }
  34.  
  35. template <class T>
  36. T    &Array<T>::operator[]( short index )
  37. {
  38.     if ( ( index < 0 ) || ( index >= arraySize ) )
  39.     {
  40.         cout << "index out of bounds(" << index << ")\n";
  41.         return( errorRetValue );
  42.     }
  43.     else
  44.         return( arrayPtr[ index ] );
  45. }
  46.  
  47.  
  48. //---------------------------------------  Power
  49.  
  50. template <class T>
  51. T    Power( T base, T exponent )
  52. {
  53.     T    i, product = 1;
  54.     
  55.     for ( i=1; i<=exponent; i++ )
  56.         product *= base;
  57.     
  58.     return( product );
  59. }
  60.  
  61.  
  62. //---------------------------------------  main()
  63.  
  64. int    main()
  65. {
  66.     Array<short>    myRay( kNumElements );
  67.     Array<long>        myLongRay( kNumElements );
  68.     short            i, shortBase = 4;
  69.     long            longBase = 4L;
  70.     
  71.     for ( i=0; i<=kNumElements; i++ )
  72.         myRay[ i ] = Power( shortBase, i );
  73.     
  74.     cout << "----\n";
  75.     
  76.     for ( i=0; i<kNumElements; i++ )
  77.         cout << "myRay[" << i << "]: " << myRay[ i ] << "\n";    
  78.     
  79.     for ( i=0; i<kNumElements; i++ )
  80.         myLongRay[ i ] = Power( longBase, (long)i );
  81.     
  82.     cout << "----\n";
  83.     
  84.     for ( i=0; i<kNumElements; i++ )
  85.         cout << "myLongRay[" << i
  86.             << "]: " << myLongRay[ i ] << "\n";
  87.     
  88.     return 0;
  89. }